/*
 * Copyright 2008 Johnny Jian
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.googlecode.getris.game.quadrel

import static org.junit.Assert.assertArrayEquals
import static org.junit.Assert.assertEquals
import org.junit.BeforeClass
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.junit.runners.Parameterized.Parameters

@RunWith(Parameterized)
class QuadrelFourTest {

	static quadrel
	def squares
	def offset

	@Parameters static data() {
		[
			[
				[
					[0, 1],
					[1, 1],
					[1, 0]
				],
				[left: 1, top: 0]
			],
			[
				[
					[1, 1, 0],
					[0, 1, 1]
				],
				[left: 0, top: 1]
			]
		].collect { it as Object[] } * 2
	}

	QuadrelFourTest(a, b) {
		squares = a as boolean[][]
		offset = b
	}

	@BeforeClass static void createQuadrel() {
		quadrel = new QuadrelFour()
	}

	@Test void testRotate() {
		assertArrayEquals squares, quadrel.rotate().squares
		assertEquals offset, quadrel.offset
		assertEquals 3, quadrel.bound
	}

}
